package com.g401.PracticaTestMant;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

import com.g401.PracticaTestMant.Producto;

public class Tienda {

	final String NOMBFICHERO="tienda.txt";
    private String nombre;
    private ArrayList<Producto> productos;
         
     
    public Tienda(String nombre, ArrayList<Producto> productos){
        this.nombre=nombre;
        this.productos=productos;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
 
    public ArrayList<Producto> getProductos() {
        return productos;
    }
 
    public void setProductos(ArrayList<Producto> productos) {
        this.productos = productos;
    }
         
    public void comprarProducto(Producto producto, int cantidad) throws IOException{
    	Scanner leer=new Scanner(System.in); 
    	int opcion;
    	
    	if(producto.getStock() - cantidad >= 0){
    		do{
    		   System.out.println("Eliga el tipo de envio:\n1. Urgente\n2. Normal");
        	   //opcion=leer.nextInt();
    		   System.out.println("Para que la prueba sea automatica elegimos la opcion 1 (urgente)");
    		   opcion=1;
    		}while(opcion!=1 && opcion!=2);
        	   switch ( opcion ) {
				case 1:
					System.out.println("Ha elegido tipo de envio urgente");
					System.out.println("El coste del envio urgente se cobrará contrareembolso");
					break;
				case 2:
					System.out.println("Ha elegido tipo de envio normal");
					break;
				}
        	   modificarStock(producto, -cantidad);
           }
           else{
        	   System.out.println("Usted puede comprar como maximo "+ (cantidad - producto.getStock()));
           }     
    }
         
    public void modificarPrecio(Producto producto, double precio) throws IOException{
            String lineaVieja=producto.toString(), lineaNueva;
             
            producto.setPrecio(precio);
            lineaNueva = producto.toString();
            File fichero = new File(NOMBFICHERO);
            modificarProducto(fichero, lineaVieja, lineaNueva);
        }
         
    public void modificarStock(Producto producto, int cantidad) throws IOException{
                String lineaVieja=producto.toString(), lineaNueva;
         
                int stock=producto.getStock();
                producto.setStock(stock+cantidad);
                 
                lineaNueva=producto.toString();
                File fichero = new File(NOMBFICHERO);
                modificarProducto(fichero, lineaVieja, lineaNueva);
    }
     
    public void añadirProducto(Producto p) throws IOException{
        productos.add(p);
        String texto = p.toString();
        File fichero = new File(NOMBFICHERO);
        escribirFichero(fichero, texto, true);
    }
     
        public void escribirFichero(File fichero, String texto, Boolean salto) throws IOException{
            if(salto){
                try {
                        FileWriter escribir=new FileWriter(fichero,true);
                        escribir.write(texto+"\r\n");   
                         escribir.close();
                    } catch (FileNotFoundException e) {
                            System.out.println("Error al abrir el fichero\n");
                    }
            }else{
                try {
                        FileWriter escribir=new FileWriter(fichero);
                        escribir.write(texto);
                         escribir.close();
                    } catch (FileNotFoundException e) {
                            System.out.println("Error al abrir el fichero\n");
                    }
            }
        }
         
        public void modificarProducto(File ficheroViejo,String lineaAntigua,String lineaNueva)throws IOException{          
            String fichero="";
            try {  
                /*Si existe el fichero inical*/ 
                if(ficheroViejo.exists()){  
                    /*Abro un flujo de lectura*/ 
                    BufferedReader Flee= new BufferedReader(new FileReader(ficheroViejo));  
                    String linea;  
                    /*Recorro el fichero de texto linea a linea*/ 
                    while((linea=Flee.readLine())!=null) {   
                        /*Si la linea obtenida es igual al la buscada 
                         *para modificar*/ 
                        if (linea.toUpperCase().trim().equals(lineaAntigua.toUpperCase().trim())) {  
                           /*Escribo la nueva linea en vez de la que tenia*/ 
                            fichero=fichero+lineaNueva+"\r\n";
//                            
                        }else{  
                            /*Escribo la linea antigua*/ 
                             fichero=fichero+linea+"\r\n";
                             
                        }               
                    }
                    System.out.println("A continucacion el fichero");
                    System.out.println(fichero);
                    System.out.println();
                    Flee.close();
                     
                    escribirFichero(ficheroViejo, fichero, false);
                }else{  
                    System.out.println("Fichero No Existe");  
                }  
            } catch (Exception ex) {  
                /*Captura un posible error y le imprime en pantalla*/  
                 System.out.println(ex.getMessage());  
            }  
       }
}
